import { Injectable, OnModuleInit } from '@nestjs/common';
import { Prisma, PrismaClient } from '@prisma/client';
// function setOffsetTime(object: any, offsetTime: number) {
//     console.log('处理时间----------', object);

//     if (typeof object !== "object") return;
//     if (!object) return null;
//     console.log('object', object)
//     for (const key of Object.keys(object)) {
//         const value = object[key];
//         if (value instanceof Date) {
//             object[key] = new Date(value.getTime() + offsetTime);
//         } else if (typeof value === "object") {
//             setOffsetTime(value, offsetTime);
//         }
//     }
// }

// const timezoneMiddleware: Prisma.Middleware = async (params, next) => {
//     const offsetTime = 8 * 60 * 60 * 1000;

//     setOffsetTime(params.args, offsetTime);
//     const result = await next(params);
//     setOffsetTime(result, -offsetTime);

//     return result;
// };
// const TIME_FIELDS = ['createTime', 'updateTime'];
// const timezoneMiddleware: Prisma.Middleware = async (params, next) => {
//     console.log(params.action, 'prisma的操作', params.args.data);

//     if (params.action === 'create' || params.action === 'update') {
//         // 2. 如果是 create 操作，处理 createTime
//         if (params.action === 'create') {
//             params.args.data.createTime = toDate(new Date((new Date().getTime() + 8 * 60 * 60 * 1000)), { timeZone: 'Asia/Shanghai' }).toISOString();
//             params.args.data.updateTime = toDate(new Date((new Date().getTime() + 8 * 60 * 60 * 1000)), { timeZone: 'Asia/Shanghai' }).toISOString();
//         }

//         // 3. 如果是 update 操作，处理 updateTime
//         if (params.action === 'update') {
//             params.args.data.updateTime = toDate(new Date((new Date().getTime() + 8 * 60 * 60 * 1000)), { timeZone: 'Asia/Shanghai' }).toISOString();
//         }
//     }
//     console.log(params.args.data, '修改后');


//     // 3. 执行下一个中间件或查询
//     return next(params);
// }



@Injectable()
export class PrismaService extends PrismaClient implements OnModuleInit {
    constructor() {
        super({
            log: [{ emit: "stdout", level: "query" }],
        });
    }
    async onModuleInit() {
        await this.$connect()
        // this.$use(timezoneMiddleware)
    }
}
